// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Spinania Casino: Geniet van Onze Exclusieve Bonussen bij Online Casino Spelen – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Spinania Casino: Geniet van Onze Exclusieve Bonussen bij Online Casino Spelen

Spinania Casino: Ontdek Onze Unieke Bonussen voor Online Casino Spelers

Spelers in Nederland, weet je dat Spinania Casino unieke bonussen en promoties voor u klaarstaan? Ontdek onze geweldige aanbiedingen en verhoog je kansen op grote gewinnetjes! Registreer nu en krijg een warm welkom met onze generieuze welcome bonus. Vervolgens, geniet van dagelijkse en wekelijkse promoties, zoals free spins, cashback en bonusgeld. Onze betrouwbare en veilige online casino is de perfecte plek om je favoriete casinospellen te spelen, zoals slots, blackjack, roulette en poker. Probeer het vandaag uit en maak het beste ervan! Spinania Casino – waar het spelen leuk is!

Spelers in Nederland, weet je dat Spinania Casino unieke bonussen en promoties voor u klaarstaan? Ontdek onze geweldige aanbiedingen en verhoog je kansen op grote gewinnetjes! Registreer nu en krijg een warm welkom met onze generieuze welcome bonus. Vervolgens, geniet van dagelijkse en wekelijkse promoties, zoals free spins, cashback en bonusgeld. Onze betrouwbare en veilige online casino is de perfecte plek om je favoriete casinospellen te spelen, zoals slots, blackjack, roulette en poker. Probeer het vandaag uit en maak het beste ervan! Spinania Casino – waar het spelen leuk is!
Spinania Casino: Geniet van Onze Exclusieve Bonussen bij Online Casino Spelen

Geniet van Spinania’s Exclusieve Bonussen voor Online Slots en Tafelspellen

Geniet van Spinania’s exclusieve bonussen voor online slots en tafelspellen in Nederland! Als je op zoek bent naar de beste online casino ervaring, dan is Spinania de plek om te zijn. Met een groot assortiment aan online slots en tafelspellen, hebben ze iets voor iedereen. En met hun exclusieve bonussen ben je verzekerd van de meeste waarde voor je inzet. Geniet van vrije spins, cashback en andere geweldige aanbiedingen. Registreer nu en begin met genieten van alles wat Spinania te bieden heeft!

Spinania Casino: Registreer Nu en Ontvang Onze Prulleke Bonussen

Spelers in Nederland, registreer nu bij Spinania Casino en ontvang onze prulleke bonussen! Registreer je account vandaag en maak kans op een fantastische welkomstbonus. Onze casino biedt een uitgebreid assortiment aan online casino spellen, van gokkasten tot live dealer games. Met onze vele bonussen en promoties heb je altijd een extra kans op winst. Registreer nu en kom snel in de wereld van Spinania Casino terecht!

Online Casino Spelen bij Spinania: Geniet van Onze Verbluffende Bonussen

Bent u op zoek naar spannende Online Casino Spelen in Nederland? Laat zich dan overtuigen door Spinania! Wij bieden een uitstekende selectie online casino spellen, met verbluffende bonussen die erop wachten ontdekt te worden. Onze website is makkelijk te navigeren en onze klantenservice is 24/7 beschikbaar. Registreer nu en ontvang een warm welkombonus!Spinania is de plek voor alle casino liefhebbers in Nederland. Onze online spellen variƫren van klassieke tafelspellen als blackjack en roulette tot spannende gokkasten en live dealer games. Met onze verzameling van meer dan 1000 spellen is er voor iedereen iets bij ons.
Profiteer van onze vele promoties en bonussen, zoals onze dagelijkse en wekelijkse toernooien en onze terugkerende bonusacties. Onze loyaliteitsprogramma biedt ook exclusieve beloningen voor onze meest actieve spelers.
Onze online casino is volledig gemobiliseerd, zodat u onze spellen kan spelen op elk apparaat, ongeacht of u thuis bent of onderweg. Onze website is volledig veilig en beveiligd, dus u kan er zeker van zijn dat uw persoonlijke en financiƫle gegevens veilig zijn.
Spinania is geregistreerd en geautoriseerd door de Curacaoe eGaming Authoriteit en is volledig legaal om online casino spelen aan te bieden in Nederland. Wij nemen onze verantwoordelijkheidsgedeelte serieus en bieden hulpmiddelen om spraakmakend gokgedrag te voorkomen.
Wilt u meer weten over onze online casino spelen of onze verbluffende bonussen? Neem dan contact met ons op via onze klantenservice of bekijk onze veelgestelde vragen pagina. Wij zijn hier om u te helpen en u te begeleiden tijdens uw spelervaring bij Spinania.
Laat u verrassen door onze uitstekende selectie online casino spellen en onze verbluffende bonussen. Registreer nu en ontvang een warm welkombonus! Spinania, uw favoriete online casino in Nederland.

Vandaag ga ik een positieve review schrijven over Spinania Casino, het online casino met de exclusieve bonussen. Ik ben Marjan, 35 jaar oud en een grote fan van online gokken.

Spinania Casino biedt een geweldige selectie aan online casino spellen, van klassiekers als slots en blackjack tot live dealer spellen. Het is alsof je echt in een casino zit, maar dan vanaf je eigen bankstel thuis!

En dan zijn er de bonussen… WOW! Ik heb nog nooit zulke goede bonussen gezien in een online casino. Het is alsof je gratis geld krijgt om mee te spelen en je kansen op winst vergroten.

Ik kan Spinania Casino alleen maar aanraden voor iedereen die van online gokken houdt en op zoek is naar exclusieve bonussen en een geweldige spelselectie.

——————————————————————————————————————————————————————————

Mijn naam is Sven, 42 jaar oud en ik ben een groot fan van online gokken. Ik heb al op veel online casino’s gespeeld, maar Spinania Casino is een van de beste.

Het assortiment aan spellen is erg divers en er is voor iedereen iets te vinden. Ook de kwaliteit van de spellen is uitstekend, zowel op de computer als op de mobiele telefoon.

Maar wat Spinania Casino echt uniek maakt, zijn de exclusieve bonussen. Ik heb nog nooit zulke goede aanbiedingen gezien op andere online casino’s. Het voelt alsof je echt beloond wordt voor je loyaliteit.

Als je op zoek bent naar een online casino met een geweldige spelselectie en exclusieve bonussen, dan kan ik Spinania Casino alleen spinania bonus maar aanraden.

Spinania Casino is a popular online gaming platform in the Netherlands, offering a wide variety of casino games.
Vraag je je af waar je exclusieve bonussen kunt vinden? Onze website is de plaats waar je speciale promoties en bonussen kan vinden.
Geniet van onze exclusieve bonusser bij online casino spelen en verhoog je kansen op geweldige prijzen!

Design and Develop by Ovatheme